home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / wings / w_src / asm.doc next >
Encoding:
Text File  |  1994-11-16  |  11.3 KB  |  294 lines

  1. :--- vsync        proc
  2.     VSYNC割り込みが起きるたびにこのプロシージャを呼び出します
  3.     この中では,マウスの移動量をチェックして移動が認められるならば新しい位置
  4.     にマウスカーソルを描いて,マウスボタンの状態をmos_buttonに格納します
  5. ;--- draw_mouse    proc
  6.     ( new_mos_x_pos, new_mos_y_pos )の位置にある背景をバッファ( back_image )
  7.     に転送してその位置にマウスカーソルを描きます
  8. ;--- erase_mouse    proc
  9.     バッファ( back_image )に転送した背景を( old_mos_x_pos, oldnew_mos_y_pos )
  10.     に戻します
  11. ;--- mos_motion    proc
  12.     マウスの相対移動量を読み取ります
  13. ;--- mos_position    proc
  14.     マウスカーソルの位置を設定します
  15. ;--- mos_awake    proc
  16.     マウスカーソルを表示状態にします
  17. ;--- mos_sleep    proc
  18.     マウスカーソルを非表示状態にします
  19. ;--- exit    proc
  20.     DOSに戻ります
  21. ;--- function_1    proc
  22.     上方向の猫の手スクロ~ル。マウスをクリックしたままスクロ~ル
  23. ;--- function_2    proc
  24.     下方向の猫の手スクロ~ル
  25. ;--- function_3    proc
  26.     上方向の引っかきスクロ~ル。マウスを途中で放すスクロ~ル
  27. ;--- function_4    proc
  28.     下方向の引っかきスクロ~ル
  29. ;--- h_scroll    proc
  30.     横スクロ~ルさせます。1回のスクロ~ルで 8ドットスクロ~ルさせます
  31. ;--- menu    proc
  32.     マウスの押された位置によって登録されたプロシージャを呼び出します
  33. ;--- item_range    proc
  34.     マウスの押された位置が有効であったかどうか判断します
  35. ;--- draw_menu    proc
  36.     登録されているアイテムの名前を表示します
  37. ;--- reverse_item        proc
  38.     選択されたアイテムの名前を反転表示します
  39. ;--- entry_1        proc
  40.     ディスクブラウザを表示します
  41. ;--- drive_down    proc
  42.     ドライブナンバを 1つ減らします
  43. ;--- drive_up    proc
  44.     ドライブナンバを 1つ増やします
  45. ;--- put_new_drive    proc
  46.     ドライブナンバを表示します
  47. ;--- clear_file_field    proc
  48.     ファイル名が表示される部分をクリアします
  49. ;--- get_filename    proc
  50.     ディレクトリ上のファイルを読み取ります
  51. ;--- find_file    proc
  52.     ディレクトリ上のファイルを読み取ります
  53. ;--- file_sort    proc
  54.     ファイル名をソートします。最初にディレクトリとファイルにわけ,次に
  55.     ディレクトリ,ファイルごとにバブルソートをします
  56. ;--- compare    proc
  57.     実際にソートしている部分です
  58. ;--- file_up        proc
  59.     次のファイルを表示します
  60. ;--- file_down        proc
  61.     前のファイルを表示します
  62. ;--- put_filename    proc
  63.     ディレクトリ上のファイルを表示します
  64. ;--- file_info    proc
  65.     ファイルアトリビュート,ファイルサイズ,ファイル名をバッファに格納します
  66. ;--- put_dir    proc
  67.     ディレクトリを表示します
  68. ;--- select_file    proc
  69.     選択されたファイルがディレクトリならディレクトリ移動をしファイルなら読み
  70.     込み処理をします
  71. ;--- not_bar    proc
  72.     選択されたファイル名を反転表示します
  73. ;--- entry_2        proc
  74.     色設定メニューを表示します
  75. ;--- entry_palette    proc
  76.     テキストのパレットを変更します
  77. ;--- entry_3        proc
  78.     移動メニューを表示します
  79. ;--- entry_jump    proc
  80.     移動メニューのアイテムを処理します
  81. ;--- entry_4        proc
  82.     書式メニューを表示します
  83. ;--- entry_tab        proc
  84.     タブ変更を行います
  85. ;--- entry_crtc        proc
  86.     画面サイズの変更を行います
  87. ;--- change_crtc    proc
  88.     CRTCレジスタを変更します
  89. ;--- entry_crlf        proc
  90.     改行表示の選択を行います
  91. ;---- entry_80    proc
  92.     80行表示の選択を行います
  93. ;--- entry_5        proc
  94.     情報メニューの処理をします
  95. ;--- entry_6        proc
  96.     終了メニューの処理をします
  97. ;--- set_item_field    proc
  98.     ルートメニューの表示位置によってサブメニューの表示される位置を計算します
  99. ;--- display_title    proc
  100.     スタートタイトルを表示します
  101. ;--- draw_center_bar    proc
  102.     中央のバーを表示します
  103. ;--- clear_crtc    proc
  104.     CRTCレジスタを変更します
  105. ;--- read_font    proc
  106.     12ドットフォントを読み込みます
  107. ;--- read_file    proc
  108.     選択されたファイルを読み込み,最初の行と最終行のポインタをセットして
  109.     テキストを表示します
  110. ;--- check_drive proc
  111.     now_drvで示されたドライブが交換可能な時,そのドライブにディスクがセット
  112.     されているかどうかチェックします
  113. ;--- overflow    proc
  114.     ファイルがすべて読み込めなかった時のメッセージを表示します
  115. ;--- text_treatment    proc
  116.     テキストを表示する前の前処理をします。各行の開始オフセットアドレスを
  117.     バッファに格納します
  118. ;--- put_text    proc
  119.     テキストを表示します
  120. ;--- put_cr_mark    proc
  121.     改行を示す ↓ を表示します
  122. ;--- set_color    proc
  123.     テキストの前景色,背景色を設定します
  124. ;--- put_ank        proc
  125.     テキストの ANK文字を表示します
  126. ;--- put_kan        proc
  127.     テキストの 2バイト文字を表示します
  128. ;--- put_next_words    proc
  129.     上スクロ~ルのときの次の 1行を表示します
  130. ;--- put_back_words    proc
  131.     下スクロ~ルのときの次の 1行を表示します
  132. ;--- up_scroll        proc
  133.     上スクロ~ルさせます
  134. ;--- down_scroll        proc
  135.     下スクロ~ルさせます
  136. ;--- set_palette    proc
  137.     パレットを設定します
  138. ;--- font_ank_col    proc
  139.     文字色:dword,背景色:dwordの順にPUSHした後コールします。
  140. ;--- font_kan_col    proc
  141.     文字色:dword,背景色:dwordの順にPUSHした後コールします。
  142. ;--- font_ank    proc
  143.     esiにX座標:word,Y座標:word,文字数:dword, 文字格納番地:dwordの順で格納
  144.     させれている番地をセットしてコール。文字数に0をセットすると文字列すべて
  145.     を表示
  146. ;--- font_kan    proc
  147.     esiにX座標:word,Y座標:word,文字数:dword,文字格納番地:dwordの順で格納
  148.     させれている番地をセットしてコール。漢字 1文字につき 2文字と数える
  149. ;--- font_10    proc
  150.     font_ank_colで設定した色でeaxの値を10進数 8桁で表示します
  151. ;--- div_10    proc
  152.     font_10プロシージャよりコールされます
  153. ;--- font_mix    proc
  154.     esiにX座標:word,Y座標:word,文字数:dword, 文字格納番地:dwordの順で格納
  155.     させれている番地をセットしてコール。文字をANK文字,2バイト文字問わず表示
  156.     します
  157. ;--- draw_h_line    proc
  158.     垂直線を描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:word
  159.     (X座標オフセット), off_y:word(Y座標オフセット), color:word
  160.     以下のグラフィック関数はw_page:dwordに 0を書き込むとレイア 0,40000h
  161.     を書き込むとレイア 1に書き込みます
  162. ;--- draw_w_line    proc
  163.     水平線を描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:word,
  164.     off_y:word, color:word
  165. ;--- draw_boxful proc
  166.     矩形を描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:word,
  167.     off_y:word, color:word
  168. ;--- draw_box    proc
  169.     枠線を描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:wprd,
  170.     off_y:word, color:word
  171. ;--- draw_button    proc
  172.     ボタンを描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:word,
  173.     off_y:word, opt:word( optが 1なら引っ込んだ状態,0なら出っ張った状態)
  174. ;--- get_image    proc
  175.     x1:word,y1:word,x2:word,y2:wordの順にPUSHしたあとコール
  176.     格納できるイメージデータの個数はIMAGE_NUM_MAXに定義してあり,格納できる
  177.     イメージデータのトータルサイズはIMAGE_SIZEに定義してあります。イメージ
  178.     データ格納に失敗したらキャリーフラグをセットします
  179.     以上全て, x1<=x2, y1<=y2でなければなりません
  180. ;--- put_image    proc
  181.     get_imageで格納したイメージデータを復帰します。最後に格納した順に復帰
  182.     します
  183. ;--- wait_vsync    proc
  184.     垂直帰線期間になるまでループします
  185. ;--- wait_hsync    proc
  186.     水平帰線期間になるまでループします
  187. ;--- sleep    proc
  188.     時間待ちをします。ecxに値(1~99 10ms単位)をセットしてコールします
  189. ;--- debug    proc
  190.     ランニングデバッグルーチン。ドライブ0のアクセスランプを 900msの間
  191.     点灯させます
  192.  
  193. *** variables ***
  194.  
  195. scroll.speed    スクロ~ルスピード値が入ります。指定された値分だけHSYNC
  196.                 ループを行います
  197. scroll.off_adr    CRTCレジスタ17番のFA0の値が入っています
  198. ptword.off_adr    CRTCレジスタ17番のFA0の値が入っています
  199. ptword.now_line    現在表示されているテキストの画面右下の行番号が入っています
  200. real_mem        db    32 dup( 0 )    リアルBIOS呼び出す時に使っています
  201. r_reg            label    far
  202. r_int            dw    0
  203. r_ds            dw    0
  204. r_es            dw    0
  205. r_fs            dw    0
  206. r_gs            dw    0
  207. r_eax            dd    0
  208. r_edx            dd    0           ここまで
  209. image_num        db    0    現在保存されているイメージデータの個数が入ります
  210. cr_disp            db    ON  改行表示するならONしないならOFFが入ります
  211. mos_disp        db    ON  マウスカーソルを表示するならONしないならOFFが入ります
  212. moustat            db    00110000b マウスの状態を読む時に使います
  213. int_slave        db    ?    割り込みレジスタの値が保存されています
  214. rvsync_off        dd    ?    リアル側のVSYNC割り込みアドレスが保存されています
  215. pointer            dd    ?    各行の先頭アドレスを保存するバッファの基底アドレスが
  216.                         入っています
  217. buff            dd    ?    テキストを保存するバッファの基底アドレスが入っています
  218. memory            dd    ?    空きメモリの容量が入っています
  219. file_size        dd    0    読み込んだファイルの大きさが入ります
  220. max_line        dd    0    読み込んだテキストの行数が入ります
  221. def_max_line    dd    0    読み込めるテキストの行数の最大値が入ります
  222. text_line        dd    ?    put_text procのローカル変数として使われています
  223. add_ebx            dd     4, 3, 2, 1, 0, 0, 0, 0    タブの時いくつ文字数を進めるかが
  224.                                             入っています
  225. add_edi            dd  12, 9, 6, 3, 0, 0, 0, 0    タブの時いくつVRAMアドレスを進め
  226.                                             るかが入っています
  227. tab_wide        dd    3    現在のタブ幅 - 1が入ります
  228. r_line            dd    328/2    上スクロ~ルの時転送するラインのオフセットアドレス
  229.                             が入ります
  230. max_str            dd    52    現在の 1行に表示できる最大文字数が入ります
  231. l_count_1        dd    39    文字を書く前に何バイト分背景色で塗り潰すかの値が入って
  232.                         います
  233. l_count_2        dd    512-156     1つ下の塗り始めのアドレスまでのバイト数が入ってい
  234.                             ます
  235. w_page            dd    40000h    40000hならグラフィックをレイア 1に書き込む,0なら
  236.                             レイア 0に書き込む
  237. back_ground        dd    60 dup( 0cccccccch )    塗る潰す背景色データ
  238. function        dd    function_1, function_2, function_3, function_4
  239.                     呼び出されるプロシージャのアドレスが入っています
  240. jmp_tbl_1        dd    ank_ok_1, chk_kan_1    間接ジャンプのジャンプ先アドレス
  241. jmp_tbl_2        dd    ank_ok_1, kan_ok_1
  242. jmp_tbl_3        dd    ank_ok_2, chk_kan_2
  243. jmp_tbl_4        dd    ank_ok_2, kan_ok_2
  244. jmp_tbl_5        dd    ank_ok_3, chk_kan_3
  245. jmp_tbl_6        dd    ank_ok_3, kan_ok_3    ここまで
  246. h_size            dd    640/2    現在の表示領域を 2で割った値
  247. bar_x            dd    640/2-8    中央のバーが表示される位置
  248.                 align    4
  249. now_mos_x_pos    dd    284/2    1つ前のマウスの座標
  250. now_mos_y_pos    dd    160        1つ前のマウスの座標
  251. old_mos_x_pos    dd    284/2    保存されている背景の座標
  252. old_mos_y_pos    dd    160        保存されている背景の座標
  253. new_mos_x_pos    dd    284/2    現在のマウスの座標
  254. new_mos_y_pos    dd    160        現在のマウスの座標
  255. max_mos_x_pos    dd    624/2    マウスの最大移動範囲
  256. max_mos_y_pos    dd    464        マウスの最大移動範囲
  257. min_mos_x_pos    dd    0        マウスの最小移動範囲
  258. mos_button        db    0        マウスのボタン状態が入ります。 0ならクリックして
  259.                             いない, 1なら左クリック, 2なら右クリック,左右
  260.                             同時クリックというのはありません
  261. ptn_offset        dd    0        どのマウスカーソルの形状を表示するかの値が入ります
  262. back_image        db    128    dup( ? )  マウスが表示されている背景のデータが入ります
  263. eighty            db    OFF        OFFなら80行表示する,ONならしない
  264. catch            db    OFF        OFFならマウスが画面を掴んでいる,ONなら掴んでいない
  265. first_y            dd    0        マウスの Y座標の保存
  266. second_y        dd    0        マウスの Y座標の保存
  267. vram_line        dd    0        トータルスクロ~ルライン数
  268. scroll_off        dw    0        何ドット右に横スクロ~ルしたか
  269. ptn_chg_1        db    00000000b, 00001111b, 11110000b, 11111111b
  270. ptn_chg_2        db    10001000b, 10001111b, 11111000b, 11111111b
  271.                     マウスのビットイメージから16色イメージへの変換用データ
  272. path            db    16 dup( 0 )    読み込んだファイルのパス名が入る
  273. changeable        db    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
  274.                     それぞれがA~Qドレイブに対応していて 0ならばそのドライブ
  275.                     は接続されていない, 1ならフロッピィのような交換可能ドライ
  276.                     ブ, 2ならハードディスクのような交換不能ドライブ
  277. file_pnt        dw    9    現在何番目のファイルを表示しているか
  278. file_num        dw    0    該当したファイルの個数
  279. file            file_dat FILE_MAX dup ( ? )     各ファイルの各情報を保存している
  280.                                              バッファ
  281. now_drv            db    ?    現在のカレントドライブ
  282. now_dir            db    65 dup( ? )    現在のカレントディレクトリ
  283. current_drv        db    ?    起動時のカレントドライブ
  284. current_dir        db    65 dup( ? )    起動時のカレントディレクトリ
  285. path_list        db    64 dup( 0 )    現在のディレクトリのフルパスが入る
  286. mark            dd    7 dup( 0ffffffffh )    登録された移動先の先頭行アドレスが入る
  287. strptn            db    FNT_BUF_SIZ dup( 0 )    12ドットフォントデータが入る
  288. image_xy        image_dat  IMAGE_NUM_MAX dup( < 0, 0, 0, 0 > )
  289.                     格納されているイメージデータの座標が入る
  290. image_pnt        dd    (IMAGE_NUM_MAX+1) dup( image_buff )
  291.                     格納されているイメージデータのバッファアドレスが入る
  292. image_buff        db    IMAGE_SIZE dup( 0 )
  293.                     格納されているイメージデータが入る
  294.